package com.example.teemor.es_demo.repository.es;

import com.example.teemor.es_demo.entity.ProductES;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List;

public interface ProductESRepository extends ElasticsearchRepository<ProductES, Long> {
    
    /**
     * 支持多字段模糊搜索
     */
    List<ProductES> findByTitleContainingOrDescriptionContainingOrBrandContainingOrCategoryContainingOrTagsContaining(
        String title, String description, String brand, String category, String tags
    );
    
    /**
     * 根据标题和分类进行搜索
     */
    List<ProductES> findByTitleContainingAndCategoryContaining(String title, String category);
    
    /**
     * 根据分类搜索
     */
    List<ProductES> findByCategoryContaining(String category);
    
    /**
     * 根据品牌搜索
     */
    List<ProductES> findByBrandContaining(String brand);
    
    /**
     * 根据标题搜索
     */
    List<ProductES> findByTitleContaining(String title);
    
    /**
     * 根据描述搜索
     */
    List<ProductES> findByDescriptionContaining(String description);
    
    /**
     * 根据标签搜索
     */
    List<ProductES> findByTagsContaining(String tags);
    
    /**
     * 根据价格范围搜索
     */
    List<ProductES> findByPriceBetween(Double minPrice, Double maxPrice);
    
    /**
     * 根据分类和价格范围搜索
     */
    List<ProductES> findByCategoryContainingAndPriceBetween(String category, Double minPrice, Double maxPrice);
    
    /**
     * 根据品牌和价格范围搜索
     */
    List<ProductES> findByBrandContainingAndPriceBetween(String brand, Double minPrice, Double maxPrice);
}